package com.dh.leetcode.k1;

import org.junit.Assert;
import org.junit.Test;

/**
 * ClassName: _1748_sum_of_unique_elements
 *
 * @author shouzimu
 * @Description: 1748. 唯一元素的和
 * 给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。
 *
 * 请你返回 nums 中唯一元素的 和 。
 *
 *
 *
 * 示例 1：
 *
 * 输入：nums = [1,2,3,2]
 * 输出：4
 * 解释：唯一元素为 [1,3] ，和为 4 。
 * 示例 2：
 *
 * 输入：nums = [1,1,1,1,1]
 * 输出：0
 * 解释：没有唯一元素，和为 0 。
 * 示例 3 ：
 *
 * 输入：nums = [1,2,3,4,5]
 * 输出：15
 * 解释：唯一元素为 [1,2,3,4,5] ，和为 15 。
 *
 * https://leetcode-cn.com/problems/sum-of-unique-elements/
 *
 * @date 2022/2/6 08:19
 */
public class _1748_sum_of_unique_elements {

    public int sumOfUnique(int[] nums) {
        int[] bucket = new int[101];
        int sum = 0;
        for (int num : nums) {
            bucket[num]++;
            if (bucket[num] == 1) {
                sum += num;
            } else if (bucket[num] == 2) {
                sum -= num;
            }
        }
        return sum;
    }

    @Test
    public void sumOfUniqueTest() {
        Assert.assertEquals(4, sumOfUnique(new int[]{1, 2, 3, 2}));
        Assert.assertEquals(0, sumOfUnique(new int[]{1, 1, 1, 1, 1}));
        Assert.assertEquals(15, sumOfUnique(new int[]{1,2,3,4,5}));
    }
}
